import routerLink from './components/router-link'
import routerView from './components/router-view'
export let Vue;
const install = function(_Vue) {
  // 
  Vue = _Vue
  Vue.component('router-link', routerLink)
  Vue.component('router-view', routerView)
  // 希望每个组件都可以 获取到 router 属性

  Vue.mixin({
    beforeCreate() {
      // 现在只有根组件有 router  也就是this.$options.router 能获取到   所以这边要坐下处理
      // 根据先父后子的这种机制来的
      // console.log(this.$options.name, this.$options.router)
      if(this.$options.router) {
        this._routerRoot = this
        this._router = this.$options.router
        // 初始化
        this._router.init(this)
        // 定义路由响应式
        Vue.util.defineReactive(this, '_route', this._router.history.current)
        console.log(this._router.history.current, 'mixin')
      }else{
        this._routerRoot = this.$parent && this.$parent._routerRoot
      }
      console.log(this._routerRoot._router)
    }
  })

  Object.defineProperty(Vue.prototype, '$route', {
    get() {
      return this._routerRoot._route; // current
    }
  })
  Object.defineProperty(Vue.prototype, '$router', {
    get() {
      return this._routerRoot._router;
    }
  })
}

export default install